#pragma once

#include "../Tokenizer.hpp"

namespace CPreProc
{
  class TokenizerTests
  {
  public:
    static void run_simple_test();
    static void run_pp_number_tests();
    static void run_test_from_standard_spec1();
    static void run_test_from_standard_spec2();

    struct TokenDesc
    {
      const gchar*  text;
      TokenType     type;
      int           id;
    };

    static std::vector<Token> tokenize(Tokenizer &tokenizer);
    static void test_tokenization(Tokenizer &tokenizer,TokenDesc *expected_tokens,int num_expected_tokens);
    static void test_tokens(const std::vector<Token> &tokens,TokenDesc *expected_tokens,int num_expected_tokens);
  };
}

